<script>
    //声明一条树形的数据

    //数据中都会有id和parentId进行相互对应
    let tree = [
        {
            id: 1,
            name: '北京',
            parentId: 0
        },
        {
            id: 2,
            name: '江苏',
            parentId: 0,
            children: [
                {
                    id: 4,
                    name: '南京',
                    parentId: 2
                },
                {
                    id: 5,
                    name: '徐州',
                    parentId: 2
                },
                {
                    id: 6,
                    name: '扬州',
                    parentId: 2
                },
            ]
        },
        {
            id: 3,
            name: '安徽',
            parentId: 0,
            children: [
                {
                    id: 7,
                    parentId: 3,
                    name: '滁州',
                    children:[{
                        id:9,
                        parentId:7,
                        name:'平铺'
                    }]
                },
                {
                    id: 8,
                    parentId: 3,
                    name: '合肥'
                },
            ]
        },
    ]

    //声明一个函数，专门将树形转换成扁平数据

    //attr 就是子节点的字段
    function flatTree(data,attr='children') {
        //声明一个数组，存储扁平之后的数据
        let flatArr=[];
        //recursion 递归处理函数
        function recursion(arr){
            //遍历数据
            arr.forEach(item=>{
                //判断自己是否有子节点
                if(item[attr] && item[attr].length>0){
                    recursion(item[attr])
                }
                //过滤掉子节点属性名，避免变化之后，还有子节点
                let keys=Object.keys(item)
                keys=keys.filter(key=>key !==attr)
                //重新声明一个对象，将item对应的公共属性添加到这个对象里面
                let obj={};
                keys.forEach(key=>{
                    obj[key]=item[key]
                })
                flatArr.push(obj)
            })
        }
        recursion(data)
        return flatArr
    }

    let res = flatTree(tree)
    console.log(res)



</script>